<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
    <title>Usando Zend_Layout - Zend Framework Manual</title>

    <link href="../css/shCore.css" rel="stylesheet" type="text/css" />
    <link href="../css/shThemeDefault.css" rel="stylesheet" type="text/css" />
    <link href="../css/styles.css" media="all" rel="stylesheet" type="text/css" />
</head>
<body>
<h1>Zend Framework</h1>
<h2>Programmer's Reference Guide</h2>
<ul>
    <li><a href="../en/learning.layout.usage.html">Inglês (English)</a></li>
    <li><a href="../pt-br/learning.layout.usage.html">Português Brasileiro (Brazilian Portuguese)</a></li>
</ul>
<table width="100%">
    <tr valign="top">
        <td width="85%">
            <table width="100%">
                <tr>
                    <td width="25%" style="text-align: left;">
                    <a href="learning.layout.intro.html">Introdu&ccedil;&atilde;o</a>
                    </td>

                    <td width="50%" style="text-align: center;">
                        <div class="up"><span class="up"><a href="learning.layout.html">Iniciando com o Zend_Layout</a></span><br />
                        <span class="home"><a href="manual.html">Guia de Refer&ecirc;ncia do Programador</a></span></div>
                    </td>

                    <td width="25%" style="text-align: right;">
                        <div class="next" style="text-align: right; float: right;"><a href="learning.layout.conclusions.html">Zend_Layout: Conclus&otilde;es</a></div>
                    </td>
                </tr>
            </table>
<hr />
<div id="learning.layout.usage" class="section"><div class="info"><h1 class="title">Usando Zend_Layout</h1></div>
    

    <p class="para">
        O uso básico do <span class="classname">Zend_Layout</span> é bastante trivial. Assumindo que você já
        está usando <span class="classname">Zend_Application</span>, você pode simplesmente fornecer algumas
        opções de configuração e criar um script de vizualização para o layout.
    </p>

    <div class="section" id="learning.layout.usage.configuration"><div class="info"><h1 class="title">Configuração do Layout</h1></div>
        

        <p class="para">
            A localização recomendada dos layouts é no subdiretório
            &quot;<var class="filename">layouts/scripts/</var>&quot; de sua aplicação:
        </p>

        <pre class="programlisting brush: text">
application
|-- Bootstrap.php
|-- configs
|   `-- application.ini
|-- controllers
|-- layouts
|   `-- scripts
|       |-- layout.phtml
</pre>


        <p class="para">
            Para inicializar o <span class="classname">Zend_Layout</span>, adicione o seguinte no seu
            arquivo de configuração (&quot;<var class="filename">application/configs/application.ini</var>&quot;):
        </p>

        <pre class="programlisting brush: dosini">
resources.layout.layoutPath = APPLICATION_PATH &quot;/layouts/scripts&quot;
resources.layout.layout = &quot;layout&quot;
</pre>


        <p class="para">
            A primeira linha indica onde procurar pelos scripts de layout; a segunda linha dá o
            nome do layout a ser usado, menos a extensão do script de vizualização (que é assumida
            como &quot;<var class="filename">.phtml</var>&quot; por padrão).
        </p>
    </div>

    <div class="section" id="learning.layout.usage.layout-script"><div class="info"><h1 class="title">Criando um Script de Layout</h1></div>
        

        <p class="para">
            Agora que você tem suas configurações no lugar, você precisa criar seu script de layout.
            Primeiro tenha certeza de que você criou o diretório
            &quot;<var class="filename">application/layouts/scripts</var>&quot;; depois abra um editor e crie as
            marcações para o seu layout. Scripts de layout são simplesmente scripts de vizualização,
            com algumas pequenas diferenças.
        </p>

        <pre class="programlisting brush: php">
&lt;html&gt;
&lt;head&gt;
    &lt;title&gt;Meu Site&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;?php echo $this-&gt;layout()-&gt;content ?&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>


        <p class="para">
            No exemplo acima, você notará a chamada de um assitente de vizualização
             <span class="methodname">layout()</span>. Quando você registra o recurso
            <span class="classname">Zend_Layout</span>, você também ganha acesso a uma ação e ao assistente
            de vizualização que permitem a você acesso à instância
            <span class="classname">Zend_Layout</span>; você pode então chamar operações no objeto layout.
            Neste caso, nós estamos recuperando uma variável chamada <var class="varname">$content</var>, e
            imprimindo ela. Por padrão, a variável <var class="varname">$content</var> é populada por você
            pelo script de vizualização da aplicação renderizado. Por outro lado, nada que você
            normalmente faça em um script de vizualização é perfeitamente válido -- chamar quaisquer
            assistentes ou métodos de vizualização que você desejar.
        </p>

        <p class="para">
            Neste ponto, você tem um script de vizualização funcionando e sua aplicação é informada
            de sua localização e sabe como renderizá-lo.
        </p>
    </div>

    <div class="section" id="learning.layout.usage.access"><div class="info"><h1 class="title">Acessando o Objeto Layout</h1></div>
        

        <p class="para">
            De vez em quando, você pode precisar de acesso direto ao objeto layout. Há três modos de
            fazer isso:
        </p>

        <ul class="itemizedlist">
            <li class="listitem">
                <p class="para">
                    <em class="emphasis">Dentro dos scripts de vizualização:</em> use o assistente de
                    vizualização  <span class="methodname">layout()</span>, que retorna a instância
                    <span class="classname">Zend_Layout</span> registrada com o plugin controlador frontal.
                </p>

                <pre class="programlisting brush: php">
&lt;?php $layout = $this-&gt;layout(); ?&gt;
</pre>


                <p class="para">
                    Uma vez que retornar a instância layout, você pode também simplesmente chamar os
                    métodos nele, ao invés de atribuir ela a uma variável.
                </p>
            </li>

            <li class="listitem">
                <p class="para">
                    <em class="emphasis">Dentro dos controladores de ação:</em> use o assitente de
                    ação  <span class="methodname">layout()</span>, que atua apenas como um
                    assistente de vizualização.
                </p>

                <pre class="programlisting brush: php">
// Chamando assistente como um método de corretor de ajuda.
$layout = $this-&gt;_helper-&gt;layout();

// Ou, mais detalhadamente:
$helper = $this-&gt;_helper-&gt;getHelper(&#039;Layout&#039;);
$layout = $helper-&gt;getLayoutInstance();
</pre>


                <p class="para">
                    Assim como no assitente de vizualização, desde que o assistente de ação retorne
                    a instância layout, você pode também simplesmente chamar métodos nele, ao invés
                    de atribuir a ele variáveis.
                </p>
            </li>

            <li class="listitem">
                <p class="para">
                    <em class="emphasis">Em outro lugar: </em> use o método estático
                     <span class="methodname">getMvcInstance()</span>. Isso retornará a instância layout
                    registrada pelo recurso de inicialização da aplicação.
                </p>

                <pre class="programlisting brush: php">
$layout = Zend_Layout::getMvcInstance();
</pre>

            </li>

            <li class="listitem">
                <p class="para">
                    <em class="emphasis">Via inicialização da aplicação:</em> recupera o recurso layout,
                    que será a instância <span class="classname">Zend_Layout</span>.
                </p>

                <pre class="programlisting brush: php">
$layout = $bootstrap-&gt;getResource(&#039;Layout&#039;);
</pre>


                <p class="para">
                    Em qualquer lugar que você tenha acesso ao objeto inicialização da aplicação,
                    neste método é preferível usar o método estático
                     <span class="methodname">getMvcInstance()</span>.
                </p>
            </li>
        </ul>
    </div>

    <div class="section" id="learning.layout.usage.other-operations"><div class="info"><h1 class="title">Outras Operações</h1></div>
        
        <p class="para">
            Na maioria dos casos, a configuração acmia e o script layout (com modificações) lhe
            darão o que você precisa. Porém, existe algumas outras funcionalidades que você
            provavelmente vai usar mais cedo ou mais tarde. Nos exemplos seguintes, você pode usar
            um dos <a href="learning.layout.usage.html#learning.layout.usage.access" class="link">métodos listados acima</a> para
            recuperar o objeto layout.
        </p>

        <ul class="itemizedlist">
            <li class="listitem">
                <p class="para">
                    <em class="emphasis">Configurando vairáveis layout</em>.
                    O <span class="classname">Zend_Layout</span> mantém o seu próprio registro das variáveis
                    de visualização específicas de layout que você pode acessar; a chave
                    <var class="varname">$content</var> observada no exemplo de script de layout inicial é
                    um exemplo. Você pode atribuir e recuperá-las usando acesso normal, ou via
                    método  <span class="methodname">assign()</span>.
                </p>

                <pre class="programlisting brush: php">
// Configuração de conteúdo:
$layout-&gt;somekey = &quot;foo&quot;

// Imprimindo esse mesmo conteúdo:
echo $layout-&gt;somekey; // &#039;foo&#039;

// Usando o método assign():
$layout-&gt;assign(&#039;someotherkey&#039;, &#039;bar&#039;);

// Acesso às variáveis assign()&#039;d permanece o mesmo:
echo $layout-&gt;someotherkey; // &#039;bar&#039;
</pre>

            </li>

            <li class="listitem">
                <p class="para">
                     <span class="methodname">disableLayout()</span>. Ocasionalmente, você pode querer
                    desabilitar layouts; por exemplo, quando responder um pedido Ajax, ou fornecer
                    uma representação RESTful de um recurso. Nesses casos, você pode chamar o método
                     <span class="methodname">disableLayout()</span> no seu objeto layout.
                </p>

                <pre class="programlisting brush: php">
$layout-&gt;disableLayout();
</pre>


                <p class="para">
                    O contrário deste método é, claro, o  <span class="methodname">enableLayout()</span>,
                    que pode ser chamado a qualquer hora para reabilitar layouts para a ação
                    solicitada.
                </p>
            </li>

            <li class="listitem">
                <p class="para">
                    <em class="emphasis">Selecionando um layout alternativo</em>: se você possui layouts
                    múltiplos para o seu site ou aplicação, você pode selecionar o layout a ser
                    usado a qualquer hora simplesmente chamando o método
                     <span class="methodname">setLayout()</span>. Chame ele especificando o nome do script
                    de layout sem o sufixo do arquivo.
                </p>

                <pre class="programlisting brush: php">
// Use o script de layout &quot;alternate.phtml&quot;:
$layout-&gt;setLayout(&#039;alternate&#039;);
</pre>


                <p class="para">
                    O script de layout deve encontrar-se no diretório <var class="varname">$layoutPath</var>
                    especificado nas suas configurações. O <span class="classname">Zend_Layout</span> irá
                    então usar esse novo layout quando renderizar.
                </p>
            </li>
        </ul>
    </div>
</div>
        <hr />

            <table width="100%">
                <tr>
                    <td width="25%" style="text-align: left;">
                    <a href="learning.layout.intro.html">Introdu&ccedil;&atilde;o</a>
                    </td>

                    <td width="50%" style="text-align: center;">
                        <div class="up"><span class="up"><a href="learning.layout.html">Iniciando com o Zend_Layout</a></span><br />
                        <span class="home"><a href="manual.html">Guia de Refer&ecirc;ncia do Programador</a></span></div>
                    </td>

                    <td width="25%" style="text-align: right;">
                        <div class="next" style="text-align: right; float: right;"><a href="learning.layout.conclusions.html">Zend_Layout: Conclus&otilde;es</a></div>
                    </td>
                </tr>
            </table>
</td>
        <td style="font-size: smaller;" width="15%"> <style type="text/css">
#leftbar {
	float: left;
	width: 186px;
	padding: 5px;
	font-size: smaller;
}
ul.toc {
	margin: 0px 5px 5px 5px;
	padding: 0px;
}
ul.toc li {
	font-size: 85%;
	margin: 1px 0 1px 1px;
	padding: 1px 0 1px 11px;
	list-style-type: none;
	background-repeat: no-repeat;
	background-position: center left;
}
ul.toc li.header {
	font-size: 115%;
	padding: 5px 0px 5px 11px;
	border-bottom: 1px solid #cccccc;
	margin-bottom: 5px;
}
ul.toc li.active {
	font-weight: bold;
}
ul.toc li a {
	text-decoration: none;
}
ul.toc li a:hover {
	text-decoration: underline;
}
</style>
 <ul class="toc">
  <li class="header home"><a href="manual.html">Guia de Refer&ecirc;ncia do Programador</a></li>
  <li class="header up"><a href="manual.html">Guia de Refer&ecirc;ncia do Programador</a></li>
  <li class="header up"><a href="learning.html">Conhecendo o Zend Framework</a></li>
  <li class="header up"><a href="learning.layout.html">Iniciando com o Zend_Layout</a></li>
  <li><a href="learning.layout.intro.html">Introdu&ccedil;&atilde;o</a></li>
  <li class="active"><a href="learning.layout.usage.html">Usando Zend_Layout</a></li>
  <li><a href="learning.layout.conclusions.html">Zend_Layout: Conclus&otilde;es</a></li>
 </ul>
 </td>
    </tr>
</table>

<script type="text/javascript" src="../js/shCore.js"></script>
<script type="text/javascript" src="../js/shAutoloader.js"></script>
<script type="text/javascript" src="../js/main.js"></script>

</body>
</html>